home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / coppers.lha / Mad_Copper.s < prev    next >
Encoding:
Text File  |  1993-10-31  |  6.4 KB  |  321 lines

  1. colors=210
  2. stadd=100
  3. speed=6
  4. cxstart=$26
  5. stgap=$222
  6. stranzahl=5
  7. strgap=30
  8. avis=60
  9. gap=32        ;speed
  10. color1=$0fff
  11. color2=$0888
  12. anzahl=10
  13. breite=512
  14. size=40000
  15. cystart=28
  16. ygap=1
  17. xgap=20
  18. ymenge=280
  19. xmenge=10
  20. csize=xmenge*ymenge*8+12
  21. clsize=2*xmenge*ymenge
  22.  
  23. begin:    lea    $dff000,a5
  24.     move.l    4,a6
  25.     jsr    -132(a6)
  26.     bsr    alloc
  27.     bsr    write
  28.     bsr    makestripes
  29.     bsr    startcopper
  30.     bsr    mausi
  31.     move.l    4,a6
  32.     bsr    killcopper
  33.     bsr    resccopper
  34.     bsr    free
  35.     rts
  36. mausi:    btst    #6,$bfe001
  37.     bne.s    mausi
  38.     rts
  39. alloc:
  40.     move.l    #csize,d0
  41.     moveq    #2,d1
  42.     jsr    -198(a6)
  43.     move.l    d0,cmemory
  44.     move.l    #clsize,d0
  45.     clr.l    d1
  46.     jsr    -198(a6)
  47.     move.l    d0,colmemory
  48.     move.l    #size,d0
  49.     clr.l    d1
  50.     jsr    -198(a6)
  51.     move.l    d0,memory
  52.     rts    
  53. makestripes:
  54.     move.l    memory(pc),a0
  55.     move    #anzahl-1,d0
  56. c3loop:
  57.     move    #breite-1,d1
  58. c1loop:
  59.     move    #color1,(a0)+
  60.     dbra    d1,c1loop
  61.     move    #breite-1,d1
  62. c2loop:
  63.     move    #color2,(a0)+
  64.     dbra    d1,c2loop
  65.     dbra    d0,c3loop
  66.     rts
  67. write:
  68.     move.l    cmemory(pc),a0
  69.     moveq    #cystart,d0
  70.     move    #ymenge-1,d4
  71. cr2loop:
  72.     moveq    #cxstart,d1    
  73.     moveq    #xmenge-1,d3
  74. crloop:
  75.     move    d1,d2
  76.     ori.b    #1,d2
  77.     move.b    d0,(a0)+
  78.     move.b    d2,(a0)+
  79.     move    #$fffe,(a0)+
  80.     move    #$180,(a0)+
  81.     clr    (a0)+
  82.     add.w    #xgap,d1
  83.     dbra    d3,crloop
  84.     addq.w    #ygap,d0
  85.     dbra    d4,cr2loop
  86.     move.l    #$fffffffe,(a0)+
  87.     rts
  88. main:
  89.     move.l    colmemory(pc),a0
  90.     lea    pointer1(pc),a1
  91.     lea    addtable(pc),a2
  92.     clr.l    d4
  93.     move    pointer2(pc),d4
  94.     addq    #speed,d4
  95.     andi.w    #$1ff,d4
  96.     move    d4,pointer2
  97.     bclr    #8,d4
  98.     beq.s    nosub
  99.     move    #$100,d1
  100.     sub    d4,d1
  101.     move    d1,d4
  102. nosub:
  103.     add    #stadd,d4
  104.     moveq    #xmenge-1,d1
  105. start:    clr    d0
  106.     move.b    (a2)+,d0
  107.     bclr    #7,d0
  108.     bne.s    pstripe
  109.     bclr    #6,d0
  110.     bne.s    sub
  111.     bclr    #5,d0
  112.     bne.s    add
  113. back:
  114.     dbra    d1,start
  115.     bra.s    copy
  116. add:
  117.     bsr.s    addr
  118.     bra.s    back
  119. sub:
  120.     bsr.s    subr
  121.     bra.s    back    
  122. sub1:
  123.     bsr.s    subr
  124.     bra.s    sback
  125. add1:
  126.     bsr.s    addr
  127.     bra.s    sback
  128. addr:
  129.     clr.l    d2
  130.     move    (a1),d2
  131.     add    d0,d2
  132.     cmp    #colors-2,d2
  133.     blo.s    noclr
  134.     clr    d2
  135. noclr:
  136.     move    d2,(a1)+
  137.     bra.s    do_it
  138. subr:
  139.     clr.l    d2
  140.     move    (a1),d2
  141.     sub    d0,d2
  142.     bpl.s    nomove
  143.     move    #colors-2,d2
  144. nomove:
  145.     move    d2,(a1)+
  146. do_it:
  147.     lea    colortable(pc),a4
  148.     add.l    d2,a4
  149.     move    #ymenge/2-1,d2
  150. do_loop:
  151.     move.l    (a4)+,(a0)+
  152.     dbra    d2,do_loop
  153.     rts
  154. pstripe:
  155.     move.l    a0,d3
  156.     bclr    #5,d0
  157.     bne.s    add1
  158.     bclr    #6,d0
  159.     bne.s    sub1    
  160. clear:
  161.     move    #ymenge/2-1,d2
  162. clloop:
  163.     clr.l    (a0)+
  164.     dbra    d2,clloop
  165. sback:
  166.     move.l    d3,a0    
  167.     add.l    d4,a0
  168.     moveq    #stmenge/4-1,d2
  169.     lea    stable(pc),a4
  170. csloop:
  171.     move.l    (a4)+,(a0)+
  172.     dbra    d2,csloop
  173.     move.l    d3,a0
  174.     add.l    #ymenge*2,a0
  175.     bra.s    back
  176. copy:
  177.     move.l    colmemory(pc),a0
  178.     move.l    cmemory(pc),a1
  179.     addq.l    #6,a1
  180.     move    #ymenge-1,d0
  181. coloop:
  182.     move    (a0),(a1)
  183.     addq.l    #8,a1
  184.     move    ymenge*2(a0),(a1)
  185.     addq.l    #8,a1
  186.     move    ymenge*4(a0),(a1)
  187.     addq.l    #8,a1
  188.     move    ymenge*6(a0),(a1)
  189.     addq.l    #8,a1
  190.     move    ymenge*8(a0),(a1)
  191.     addq.l    #8,a1
  192.     move    ymenge*10(a0),(a1)
  193.     addq.l    #8,a1
  194.     move    ymenge*12(a0),(a1)
  195.     addq.l    #8,a1
  196.     move    ymenge*14(a0),(a1)
  197.     addq.l    #8,a1
  198.     move    ymenge*16(a0),(a1)
  199.     addq.l    #8,a1
  200.     move    ymenge*18(a0),(a1)
  201.     addq.l    #8,a1
  202.     addq.l    #2,a0
  203.     dbra    d0,coloop
  204.     rts
  205. irq:        movem.l    d0-d7/a0-a6,-(sp)
  206.         move.w    $1e(a5),d0
  207.         btst    #4,d0
  208.         bne.s    itscopper 
  209.         bsr    main
  210. ;        move    #$fff,$180(a5)
  211.         movem.l    (sp)+,d0-d7/a0-a6
  212. irqbase:    jmp    0
  213. itscopper:    move.w    #$10,$9c(a5);    INTREQ-Bit loeschen!
  214.         movem.l    (sp)+,d0-d7/a0-a6
  215.         rte
  216. startcopper:
  217.     move.l    $6c,irqbase+2
  218.     move.l    #irq,$6c
  219.     move.w    #%0000000100000000,$096(a5)
  220.     move.l    cmemory,$080(a5)
  221. ;    clr    $088(a5)
  222.     rts
  223. killcopper:
  224.     move.l    irqbase+2,$6c
  225.     rts
  226. free:
  227.     move.l    colmemory(pc),a1
  228.     move    #clsize,d0
  229.     jsr    -210(a6)
  230.     move.l    #size,d0
  231.     move.l    memory(pc),a1
  232.     jsr    -210(a6)
  233.     move.l    cmemory(pc),a1
  234.     move    #csize,d0
  235.     jmp    -210(a6)
  236. resccopper:
  237.     lea    grname(pc),a1
  238.     clr.l    d0
  239.     jsr    -552(a6)
  240.     move.l    d0,a1
  241.     move.l    38(a1),$080(a5)
  242. ;    clr    $088(a5)
  243.     jsr    -414(a6)
  244.     jsr    -138(a6)
  245.     move    #%1000001100000000,$096(a5)
  246.     rts
  247. grname:    dc.b    "graphics.library",0
  248. even
  249. colortable:
  250.     dc.w    $001,$002,$003,$004,$005,$006,$007,$008,$009,$00a
  251.     dc.w    $00b,$00c,$00d,$00e,$00f
  252.     dc.w    $01f,$02f,$03f,$04f,$05f
  253.     dc.w    $06f,$07f,$08f,$09f,$0af,$0bf,$0cf,$0df,$0ef,$0ff
  254.     dc.w    $0fe,$0fd,$0fc,$0fb,$0fa,$0f9,$0f8,$0f7,$0f6,$0f5
  255.     dc.w    $0f4,$0f3,$0f2,$0f1,$0f0,$1f0,$2f0,$3f0,$4f0,$5f0
  256.     dc.w    $6f0,$7f0,$8f0,$9f0,$af0,$bf0,$cf0,$df0,$ef0,$ff0
  257.     dc.w    $fe0,$fd0,$fc0,$fb0,$fa0,$f90,$f80,$f70,$f60,$f50
  258.     dc.w    $f40,$f30,$f20,$f10,$f00,$f01,$f02,$f03,$f04,$f05
  259.     dc.w    $f06,$f07,$f08,$f09,$f0a,$f0b,$f0c,$f0d,$f0e,$f0f
  260.     dc.w    $e0e,$d0d,$c0c,$b0b,$a0a,$909,$808,$707,$606
  261.     dc.w    $505,$404,$303,$202,$101,$000
  262. colorend:
  263.     dc.w    $001,$002,$003,$004,$005,$006,$007,$008,$009,$00a
  264.     dc.w    $00b,$00c,$00d,$00e,$00f
  265.     dc.w    $01f,$02f,$03f,$04f,$05f
  266.     dc.w    $06f,$07f,$08f,$09f,$0af,$0bf,$0cf,$0df,$0ef,$0ff
  267.     dc.w    $0fe,$0fd,$0fc,$0fb,$0fa,$0f9,$0f8,$0f7,$0f6,$0f5
  268.     dc.w    $0f4,$0f3,$0f2,$0f1,$0f0,$1f0,$2f0,$3f0,$4f0,$5f0
  269.     dc.w    $6f0,$7f0,$8f0,$9f0,$af0,$bf0,$cf0,$df0,$ef0,$ff0
  270.     dc.w    $fe0,$fd0,$fc0,$fb0,$fa0,$f90,$f80,$f70,$f60,$f50
  271.     dc.w    $f40,$f30,$f20,$f10,$f00,$f01,$f02,$f03,$f04,$f05
  272.     dc.w    $f06,$f07,$f08,$f09,$f0a,$f0b,$f0c,$f0d,$f0e,$f0f
  273.     dc.w    $e0e,$d0d,$c0c,$b0b,$a0a,$909,$808,$707,$606
  274.     dc.w    $505,$404,$303,$202,$101,$000
  275.     dc.w    $001,$002,$003,$004,$005,$006,$007,$008,$009,$00a
  276.     dc.w    $00b,$00c,$00d,$00e,$00f
  277.     dc.w    $01f,$02f,$03f,$04f,$05f
  278.     dc.w    $06f,$07f,$08f,$09f,$0af,$0bf,$0cf,$0df,$0ef,$0ff
  279.     dc.w    $0fe,$0fd,$0fc,$0fb,$0fa,$0f9,$0f8,$0f7,$0f6,$0f5
  280.     dc.w    $0f4,$0f3,$0f2,$0f1,$0f0,$1f0,$2f0,$3f0,$4f0,$5f0
  281.     dc.w    $6f0,$7f0,$8f0,$9f0,$af0,$bf0,$cf0,$df0,$ef0,$ff0
  282.     dc.w    $fe0,$fd0,$fc0,$fb0,$fa0,$f90,$f80,$f70,$f60,$f50
  283.     dc.w    $f40,$f30,$f20,$f10,$f00,$f01,$f02,$f03,$f04,$f05
  284.     dc.w    $f06,$f07,$f08,$f09,$f0a,$f0b,$f0c,$f0d,$f0e,$f0f
  285.     dc.w    $e0e,$d0d,$c0c,$b0b,$a0a,$909,$808,$707,$606
  286.     dc.w    $505,$404,$303,$202,$101,$000
  287.     dc.w    $001,$002,$003,$004,$005,$006,$007,$008,$009,$00a
  288.     dc.w    $00b,$00c,$00d,$00e,$00f
  289.     dc.w    $01f,$02f,$03f,$04f,$05f
  290.     dc.w    $06f,$07f,$08f,$09f,$0af,$0bf,$0cf,$0df,$0ef,$0ff
  291.     dc.w    $0fe,$0fd,$0fc,$0fb,$0fa,$0f9,$0f8,$0f7,$0f6,$0f5
  292.     dc.w    $0f4,$0f3,$0f2,$0f1,$0f0,$1f0,$2f0,$3f0,$4f0,$5f0
  293.     dc.w    $6f0,$7f0,$8f0,$9f0,$af0,$bf0,$cf0,$df0,$ef0,$ff0
  294.     dc.w    $fe0,$fd0,$fc0,$fb0,$fa0,$f90,$f80,$f70,$f60,$f50
  295.     dc.w    $f40,$f30,$f20,$f10,$f00,$f01,$f02,$f03,$f04,$f05
  296.     dc.w    $f06,$f07,$f08,$f09,$f0a,$f0b,$f0c,$f0d,$f0e,$f0f
  297.     dc.w    $e0e,$d0d,$c0c,$b0b,$a0a,$909,$808,$707,$606
  298.     dc.w    $505,$404,$303,$202,$101,$000
  299. colmemory:
  300.     dc.l    0
  301. cmemory:
  302.     dc.l    0
  303. pointer1:
  304.     dcb.w    10,0
  305. pointer2:
  306.     dcb.w    10,0
  307. addtable:
  308.     dc.b    $c4,$a2,$44,$a0,$24,$42,$a0,$22,$a4,$c2
  309. ;colors=colorend-colortable
  310. memory:    dc.l    0
  311. stripe:
  312.     dc.w    breite*4
  313. stable:
  314.     dc.w    $000,$111,$222,$444,$555,$666,$777,$888,$888,$999,$999
  315.     dc.w    $aaa,$aaa,$bbb,$bbb,$ccc,$ccc,$ddd,$ddd,$eee,$eee,$eee
  316.     dc.w    $fff,$fff,$fff,$fff,$fff,$eee,$eee,$eee,$ddd,$ddd,$ccc
  317.     dc.w    $ccc,$bbb,$bbb,$aaa,$aaa,$999,$999,$888,$888,$777,$666
  318.     dc.w    $555,$444,$333,$222,$111,$000
  319. stend:
  320. stmenge=stend-stable
  321.